// 解释器模式 - 非终结符表达式
// 表示逻辑非（NOT）操作
// 对单个子表达式的解释结果取反
public class NotExpression : IExpression
{
  // 要进行非操作的表达式
  private readonly IExpression _expression;

  // 构造函数 - 初始化要进行非操作的表达式
  public NotExpression(IExpression expression)
  {
    _expression = expression;
  }

  // 实现解释方法
  // 对子表达式的结果进行逻辑非操作
  public bool Interpret(Dictionary<string, bool> context)
  {
    // 递归解释子表达式，并对结果取反
    return !_expression.Interpret(context);
  }
}